import 'package:get/get.dart';
import '../../core/models/action_record.dart';
import '../../core/models/health_plan.dart';

/// 行动页状态管理
class ActionState {
  /// 行动计划列表
  RxList<Map<String, dynamic>> actions = <Map<String, dynamic>>[].obs;
  
  /// 行动类型列表（从字典获取）
  RxList<Map<String, dynamic>> actionTypes = <Map<String, dynamic>>[].obs;
  
  /// 是否正在加载行动类型
  RxBool isLoadingActionTypes = false.obs;
  
  /// 行动记录列表
  RxList<ActionRecord> actionRecords = <ActionRecord>[].obs;
  
  /// 健康计划列表
  RxList<HealthPlan> healthPlans = <HealthPlan>[].obs;
  
  /// 是否正在编辑
  RxBool isEditing = false.obs;
  
  /// 是否正在加载行动记录
  RxBool isLoadingActionRecords = false.obs;
  
  /// 是否正在加载健康计划
  RxBool isLoadingHealthPlans = false.obs;
  
  /// 当前选中的行动索引
  RxInt selectedIndex = (-1).obs;
  
  /// 健康计划筛选状态：进行中/已生成/已完成
  RxString planFilter = '进行中'.obs;
  
  /// 减压助眠类型字典列表
  RxList<Map<String, dynamic>> relaxTypes = <Map<String, dynamic>>[].obs;
  
  /// 是否正在加载减压助眠类型
  RxBool isLoadingRelaxTypes = false.obs;
  
  /// 完成的行动数量
  int get completedCount => actions.where((action) => action['completed'] as bool).length;
  
  /// 总行动数量
  int get totalCount => actions.length;
  
  /// 完成进度
  double get progress => totalCount > 0 ? completedCount / totalCount : 0.0;
  
  /// 根据筛选条件获取健康计划列表
  List<HealthPlan> get filteredHealthPlans {
    return healthPlans.where((plan) {
      switch (planFilter.value) {
        case '进行中':
          return plan.planStatus == '1';
        case '已生成':
          return plan.planStatus == '2';
        case '已完成':
          return plan.planStatus == '3';
        default:
          return true;
      }
    }).toList();
  }
}
